草庐IT

MySQL Workbench 符号引用

全部标签

c++ - C++ 中的右值引用

//moveconstructorArrayWrapper(ArrayWrapper&&other):_p_vals(other._p_vals),_size(other._size){other._p_vals=NULL;other._size=0;}我找到了关于右值引用的教程。我真的不明白为什么我们必须设置other._p_vals=NULL;和other._size=0;作者解释:Butwhydoweneedtosetother._p_vals=NULL?Thereasonisthedestructor--whenthetemporaryobjectgoesoutofscope,

c++ - 提供给 std::unique_ptr 的简单自定义删除器 lambda:为什么使用引用捕获默认值 ([&]) 而不是非捕获 ([])?

背景Cppreference:ssectiononstd::unique_ptr显示以下演示,用于向unique_ptr提供自定义删除器实例:std::unique_ptr>p(newD,[&](D*ptr){std::cout在哪里D,就这个问题而言,就像简单的自定义类型一样,比如structD{D(){std::cout此外,上面的引用说明了删除器的以下类型要求:TyperequirementsDeletermustbeFunctionObjectorlvaluereferencetoaFunctionObjectorlvaluereferencetofunction,callab

c++ - 对非常量对象的 constexpr 引用

是否允许将非常量引用声明为constexpr?示例代码:intx=1;constexprint&r=x;这被gcc和clang接受(我尝试了这两个的几个当前和过去的版本,回到C++11,并且都接受了)。但是我认为它不应该被接受,因为C++14[dcl.constexpr/9]说:ifaconstexprspecifierisusedinareferencedeclaration,everyfull-expressionthatappearsinitsinitializershallbeaconstantexpressionandx不是常量表达式。[dcl.constexpr]的最新C+

c++ - 将 C++ lambda 复制到函数指针引用

我不确定我是否定义了以下情况下的行为:我的函数指针类型:typedefvoid(*DoAfter_cb_type)(void);应该分配回调的函数:voidDoSomething(DoAfter_cb_type&DoAfter_cb){//...DoAfter_cb=[](){//...};}来电者:DoAfter_cb_typeDoAfter_cb=nullptr;DoSomething(DoAfter_cb);//HereissomethingthathastobedoneafterDoSomethingbutbeforeDoAfter_cb.if(DoAfter_cb!=null

c++ - 是否有将引用返回到临时文件的 C++ 警告?

这个案例有一个错误:constint&foo(){constintx=0;returnx;}甚至constint&foo(){conststd::pairx={0,0};returnx.first;}但不是这个:constint&foo(){conststd::arrayx={0};returnx[0];}并且(不那么令人惊讶)不是这个:constint&foo(){conststd::vectorx={0};returnx[0];}特别是在std::vector在这种情况下,我知道这个警告会非常棘手,因为对于编译器来说constint&并不明显由std::vector::operat

显式类型转换(C 风格转换)的 C++ 转换符号和 static_cast 的多种解释

Paragraph4of[expr.cast](在撰写本文时可用的最新C++标准草案中)描述了C样式转换的行为如下:Theconversionsperformedbyaconst_­cast,astatic_­cast,astatic_­castfollowedbyaconst_­cast,areinterpret_­cast,orareinterpret_­castfollowedbyaconst_­cast,canbeperformedusingthecastnotationofexplicittypeconversion.Thesamesemanticrestrictionsan

c++ - 阅读堆栈/堆和符号表概念的好资源是什么?

请推荐一些非常详细地处理这些主题的网站或书籍。我需要更好地理解这些概念(引用C++):堆栈和堆符号表实现范围规则函数调用的实现 最佳答案 您可以阅读DragonBook,但我想这可能太多了。 关于c++-阅读堆栈/堆和符号表概念的好资源是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2064553/

c++ - 指针算术和取消引用

在下面的代码中,任何人都可以向我解释一下粗体行是做什么的。structsouthParkRec{intstan[4];int*kyle[4];int**kenny;stringcartman;};intmain(){southParkReccartoon;cartoon.stan[1]=4;cartoon.kyle[0]=cartoon.stan+1;cartoon.kenny=&cartoon.kyle[2];*(cartoon.kenny+1)=cartoon.stan;//Whatdoesthislinedo?return0;} 最佳答案

C++ 符号处理和导出 => 允许代码重复?

在我们的项目中,我们有这样的东西:structPointI{//methodsforgetting,settingandcalculatingsomepointstuffprivate:intx;inty;};structPointD{//methodsforgetting,settingandcalculatingsomepointstuffprivate:doublex;doubley;};我建议把它改成这样:templatestructPoint{//methodsforgettig,settingandcalculatingsomepointstuffprivate:Tx;Ty

c++ - 这种情况下的值或引用语义?

对于在某些情况下是选择值语义还是引用语义,我还没有感觉(但我希望如此)。有什么我可以应用的经验法则吗?我通常为内置数据类型(char、int、bool、double等)以外的所有内容选择引用。但是,有时无法从函数返回引用,所以我不得不使用指针。下面的函数就是一个例子:Foobar(){Foof;f.do_stuff();returnf;}我会使用boost::shared_ptr来存储Foo对象,但它使处理该对象变得非常难看。我目前正在查看一个返回几乎不会超过10个元素的双端队列的函数(这是我假设的,我无法确定)。按值(value)返回这个可以吗?我的考虑是过早优化的情况吗?